home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / text / tex / rtf2latex.lha / rtf2LaTeX / rtf.h < prev    next >
C/C++ Source or Header  |  1997-02-28  |  14KB  |  547 lines

  1. /*
  2.     rtf.h - RTF document processing stuff.  Distribution 1.06a3.
  3. */
  4.  
  5.  
  6. /*
  7.     Twentieths of a point (twips) per inch (Many RTF measurements
  8.     are in twips per inch (tpi) units).  Assumes 72 points/inch.
  9. */
  10.  
  11. # define    rtfTpi        1440
  12.  
  13. /*
  14.     RTF buffer size (avoids BUFSIZ, which differs across systems)
  15. */
  16.  
  17. # define    rtfBufSiz    1024
  18.  
  19. /*
  20.     Tokens are associated with up to three classification numbers:
  21.  
  22.     Class number: Broadest (least detailed) breakdown.  For programs
  23.         that only care about gross token distinctions.
  24.     Major/minor numbers: Within their class, tokens have a major
  25.         number, and may also have a minor number to further
  26.         distinquish tokens with the same major number.
  27.  
  28.     *** Class, major and minor token numbers are all >= 0 ***
  29.  
  30.     Tokens that can't be classified are put in the "unknown" class.
  31.     For such, the major and minor numbers are meaningless, although
  32.     rtfTextBuf may be of interest then.
  33.  
  34.     Text tokens are a single character, and the major number indicates
  35.     the character value (note: can be non-ascii, i.e., greater than 127).
  36.     There is no minor number.
  37.  
  38.     Control symbols may have a parameter value, which will be found in
  39.     rtfParam.  If no parameter was given, rtfParam = rtfNoParam.
  40.  
  41.     RTFGetToken() return value is the class number, but it sets all the
  42.     global token vars.
  43.  
  44.     rtfEOF is a fake token used by the reader; the writer never sees
  45.     it (except in the token reader hook, if it installs one).
  46. */
  47.  
  48.  
  49. /*
  50.     Information pertaining to last token read by RTFToken.  The
  51.     text is exactly as it occurs in the input file, e.g., "\{"
  52.     will be found in rtfTextBuf as "\{", even though it means "{".
  53.     These variables are also set when styles are reprocessed.
  54. */
  55.  
  56. extern char    rtfTextBuf[rtfBufSiz];    /* text of token */
  57. extern int    rtfTextLen;        /* length of token in rtfTextBuf */
  58. extern int    rtfClass;        /* token class */
  59. extern int    rtfMajor;        /* token major number */
  60. extern int    rtfMinor;        /* token minor number */
  61. extern int    rtfParam;        /* control symbol parameter */
  62.  
  63.  
  64. # define    rtfNoParam    (-1000000)
  65.  
  66.  
  67. /*
  68.     Token classes (must be zero-based and sequential)
  69. */
  70.  
  71. # define    rtfUnknown    0
  72. # define    rtfGroup    1
  73. # define    rtfText        2
  74. # define    rtfControl    3
  75. # define    rtfEOF        4
  76. # define    rtfMaxClass    5    /* highest class + 1 */
  77.  
  78. /*
  79.     Group class major numbers
  80. */
  81.  
  82. # define    rtfBeginGroup    0
  83. # define    rtfEndGroup    1
  84.  
  85. /*
  86.     Control class major and minor numbers.
  87. */
  88.  
  89. # define    rtfVersion    0
  90.  
  91. # define    rtfDefFont    1
  92.  
  93. # define    rtfCharSet    2
  94. # define        rtfAnsiCharSet        0
  95. # define        rtfMacCharSet        1
  96. # define        rtfPcCharSet        2
  97. # define        rtfPcaCharSet        3
  98.  
  99.  
  100. /*    destination minor numbers should be zero-based, sequential */
  101.  
  102. # define    rtfDestination    3
  103. # define        rtfPict            0
  104. # define        rtfNeXTGraphic        1
  105. # define        rtfFootnote        2
  106. # define        rtfHeader        3
  107. # define        rtfHeaderLeft        4
  108. # define        rtfHeaderRight        5
  109. # define        rtfHeaderFirst        6
  110. # define        rtfFooter        7
  111. # define        rtfFooterLeft        8
  112. # define        rtfFooterRight        9
  113. # define        rtfFooterFirst        10
  114. # define        rtfFNSep        11
  115. # define        rtfFNContSep        12
  116. # define        rtfFNContNotice        13
  117. # define        rtfInfo            14
  118. # define        rtfStyleSheet        15
  119. # define        rtfFontTbl        16
  120. # define        rtfColorTbl        17
  121. # define        rtfField        18
  122. # define        rtfFieldInst        19
  123. # define        rtfFieldResult        20
  124. # define        rtfIndex        21
  125. # define        rtfIndexBold        22
  126. # define        rtfIndexItalic        23
  127. # define        rtfIndexText        24
  128. # define        rtfIndexRange        25
  129. # define        rtfTOC            26
  130. # define        rtfBookmarkStart    27
  131. # define        rtfBookmarkEnd        28
  132. # define        rtfITitle        29
  133. # define        rtfISubject        30
  134. # define        rtfIAuthor        31
  135. # define        rtfIOperator        32
  136. # define        rtfIKeywords        33
  137. # define        rtfIComment        34
  138. # define        rtfIVersion        35
  139. # define        rtfIDoccomm        36
  140. # define        rtfIVerscomm        37    /* new */
  141. # define        rtfKeyCode        38    /* new */
  142. # define        rtfMaxDestination    39    /* highest dest + 1 */
  143.  
  144. # define    rtfFontFamily    4
  145. # define        rtfFFNil        0
  146. # define        rtfFFRoman        1
  147. # define        rtfFFSwiss        2
  148. # define        rtfFFModern        3
  149. # define        rtfFFScript        4
  150. # define        rtfFFDecor        5
  151. # define        rtfFFTech        6
  152.  
  153. # define    rtfColorName    5
  154. # define        rtfRed            0
  155. # define        rtfGreen        1
  156. # define        rtfBlue            2
  157.  
  158. # define    rtfSpecialChar    6
  159. # define        rtfCurHeadPage        0
  160. # define        rtfCurFNote        1
  161. # define        rtfCurHeadPict        2    /* valid? */
  162. # define        rtfCurHeadDate        3
  163. # define        rtfCurHeadTime        4
  164. # define        rtfFormula        5
  165. # define        rtfNoBrkSpace        6
  166. # define        rtfNoReqHyphen        7
  167. # define        rtfNoBrkHyphen        8
  168. # define        rtfPage            9
  169. # define        rtfLine            10
  170. # define        rtfPar            11
  171. # define        rtfSect            12
  172. # define        rtfTab            13
  173. # define        rtfCell            14
  174. # define        rtfRow            15
  175. # define        rtfCurAnnot        16
  176. # define        rtfAnnotation        17
  177. # define        rtfAnnotID        18
  178. # define        rtfCurAnnotRef        19
  179. # define        rtfFNoteSep        20
  180. # define        rtfFNoteCont        21
  181. # define        rtfColumn        22
  182. # define        rtfOptDest        23
  183. # define        rtfIIntVersion        24
  184. # define        rtfICreateTime        25
  185. # define        rtfIRevisionTime    26
  186. # define        rtfIPrintTime        27
  187. # define        rtfIBackupTime        28
  188. # define        rtfIEditTime        29
  189. # define        rtfIYear        30
  190. # define        rtfIMonth        31
  191. # define        rtfIDay            32
  192. # define        rtfIHour        33
  193. # define        rtfIMinute        34
  194. # define        rtfINPages        35
  195. # define        rtfINWords        36
  196. # define        rtfINChars        37
  197. # define        rtfIIntID        38
  198. # define        rtfBullet        39
  199. # define        rtfEmDash        40
  200. # define        rtfEnDash        41
  201. # define        rtfLQuote        42
  202. # define        rtfRQuote        43
  203. # define        rtfLDblQuote        44
  204. # define        rtfRDblQuote        45
  205.  
  206. # define    rtfStyleAttr    7
  207. # define        rtfBasedOn        0
  208. # define        rtfNext            1
  209.  
  210. # define    rtfDocAttr    8
  211. # define        rtfPaperWidth        0
  212. # define        rtfPaperHeight        1
  213. # define        rtfLeftMargin        2
  214. # define        rtfRightMargin        3
  215. # define        rtfTopMargin        4
  216. # define        rtfBottomMargin        5
  217. # define        rtfFacingPage        6
  218. # define        rtfGutterWid        7
  219. # define        rtfDefTab        8
  220. # define        rtfWidowCtrl        9
  221. # define        rtfHyphHotZone        10
  222. # define        rtfFNoteEndSect        11
  223. # define        rtfFNoteEndDoc        12
  224. # define        rtfFNoteText        13
  225. # define        rtfFNoteBottom        14
  226. # define        rtfFNoteStart        15
  227. # define        rtfFNoteRestart        16
  228. # define        rtfPageStart        17
  229. # define        rtfLineStart        18
  230. # define        rtfLandscape        19
  231. # define        rtfFracWidth        20
  232. # define        rtfNextFile        21
  233. # define        rtfTemplate        22
  234. # define        rtfMakeBackup        23
  235. # define        rtfRTFDefault        24
  236. # define        rtfRevisions        25
  237. # define        rtfMirrorMargin        26
  238. # define        rtfRevDisplay        27
  239. # define        rtfRevBar        28
  240. # define        rtfDefLanguage        29    /* new */
  241.  
  242. # define    rtfSectAttr    9
  243. # define        rtfSectDef        0
  244. # define        rtfNoBreak        1
  245. # define        rtfColBreak        2
  246. # define        rtfPageBreak        3
  247. # define        rtfEvenBreak        4
  248. # define        rtfOddBreak        5
  249. # define        rtfPageStarts        6
  250. # define        rtfPageCont        7
  251. # define        rtfPageRestart        8
  252. # define        rtfPageDecimal        9
  253. # define        rtfPageURoman        10
  254. # define        rtfPageLRoman        11
  255. # define        rtfPageULetter        12
  256. # define        rtfPageLLetter        13
  257. # define        rtfPageNumLeft        14
  258. # define        rtfPageNumTop        15
  259. # define        rtfHeaderY        16
  260. # define        rtfFooterY        17
  261. # define        rtfLineModulus        18
  262. # define        rtfLineDist        19
  263. # define        rtfLineStarts        20
  264. # define        rtfLineRestart        21
  265. # define        rtfLineRestartPg    22
  266. # define        rtfLineCont        23
  267. # define        rtfTopVAlign        24
  268. # define        rtfBottomVAlign        25
  269. # define        rtfCenterVAlign        26
  270. # define        rtfJustVAlign        27
  271. # define        rtfColumns        28
  272. # define        rtfColumnSpace        29
  273. # define        rtfColumnLine        30
  274. # define        rtfENoteHere        31
  275. # define        rtfTitleSpecial        32
  276. # define        rtfPrtBinFirst        33    /* new */
  277. # define        rtfPrtBin        34    /* new */
  278.  
  279. # define    rtfTblAttr    10
  280. # define        rtfCellBordBottom    0
  281. # define        rtfCellBordTop        1
  282. # define        rtfCellBordLeft        2
  283. # define        rtfCellBordRight    3
  284. # define        rtfRowDef        4
  285. # define        rtfRowLeft        5
  286. # define        rtfRowRight        6
  287. # define        rtfRowCenter        7
  288. # define        rtfRowGapH        8
  289. # define        rtfRowHt        9
  290. # define        rtfRowLeftEdge        10
  291. # define        rtfCellPos        11
  292. # define        rtfMergeRngFirst    12
  293. # define        rtfMergePrevious    13
  294. # define        rtfCellShading        14    /* new */
  295.  
  296. # define    rtfParAttr    11
  297. # define        rtfParDef        0
  298. # define        rtfStyleNum        1
  299. # define        rtfQuadLeft        2
  300. # define        rtfQuadRight        3
  301. # define        rtfQuadJust        4
  302. # define        rtfQuadCenter        5
  303. # define        rtfFirstIndent        6
  304. # define        rtfLeftIndent        7
  305. # define        rtfRightIndent        8
  306. # define        rtfSpaceBefore        9
  307. # define        rtfSpaceAfter        10
  308. # define        rtfSpaceBetween        11
  309. # define        rtfInTable        12
  310. # define        rtfKeep            13
  311. # define        rtfKeepNext        14
  312. # define        rtfSideBySide        15
  313. # define        rtfPBBefore        16
  314. # define        rtfNoLineNum        17
  315. # define        rtfTabPos        18
  316. # define        rtfTabRight        19
  317. # define        rtfTabCenter        20
  318. # define        rtfTabDecimal        21
  319. # define        rtfTabBar        22
  320. # define        rtfBorderTop        23
  321. # define        rtfBorderBottom        24
  322. # define        rtfBorderLeft        25
  323. # define        rtfBorderRight        26
  324. # define        rtfBorderBox        27
  325. # define        rtfBorderBar        28
  326. # define        rtfBorderBetween    29
  327. # define        rtfBorderSingle        30
  328. # define        rtfBorderThick        31
  329. # define        rtfBorderShadow        32
  330. # define        rtfBorderDouble        33
  331. # define        rtfBorderDot        34
  332. # define        rtfBorderHair        35
  333. # define        rtfBorderWidth        36    /* new */
  334. # define        rtfBorderColor        37    /* new */
  335. # define        rtfBorderSpace        38
  336. # define        rtfLeaderDot        39
  337. # define        rtfLeaderHyphen        40
  338. # define        rtfLeaderUnder        41
  339. # define        rtfLeaderThick        42
  340.  
  341. # define    rtfCharAttr    12
  342. # define        rtfPlain        0
  343. # define        rtfBold            1
  344. # define        rtfItalic        2
  345. # define        rtfStrikeThru        3
  346. # define        rtfOutline        4
  347. # define        rtfShadow        5
  348. # define        rtfSmallCaps        6
  349. # define        rtfAllCaps        7
  350. # define        rtfInvisible        8
  351. # define        rtfFontNum        9
  352. # define        rtfFontSize        10
  353. # define        rtfExpand        11
  354. # define        rtfUnderline        12
  355. # define        rtfWUnderline        13
  356. # define        rtfDUnderline        14
  357. # define        rtfDbUnderline        15
  358. # define        rtfNoUnderline        16
  359. # define        rtfSuperScript        17
  360. # define        rtfSubScript        18
  361. # define        rtfRevised        19
  362. # define        rtfForeColor        20
  363. # define        rtfBackColor        21
  364. # define        rtfGray            22
  365. # define        rtfLanguage        23    /* new */
  366.  
  367. # define    rtfPictAttr    13
  368. # define        rtfMacQD        0
  369. # define        rtfWinMetafile        1
  370. # define        rtfWinBitmap        2
  371. # define        rtfPicWid        3
  372. # define        rtfPicHt        4
  373. # define        rtfPicGoalWid        5
  374. # define        rtfPicGoalHt        6
  375. # define        rtfPicScaleX        7
  376. # define        rtfPicScaleY        8
  377. # define        rtfPicScaled        9
  378. # define        rtfPicCropTop        10
  379. # define        rtfPicCropBottom    11
  380. # define        rtfPicCropLeft        12
  381. # define        rtfPicCropRight        13
  382. # define        rtfPixelBits        14
  383. # define        rtfBitmapPlanes        15
  384. # define        rtfBitmapWid        16
  385. # define        rtfPicBinary        17
  386.  
  387. # define    rtfNeXTGrAttr    14
  388. # define        rtfNeXTGWidth        0
  389. # define        rtfNeXTGHeight        1
  390.  
  391. # define    rtfFieldAttr    15
  392. # define        rtfFieldDirty        0
  393. # define        rtfFieldEdited        1
  394. # define        rtfFieldLocked        2
  395. # define        rtfFieldPrivate        3
  396.  
  397. # define    rtfTOCAttr    16
  398. # define        rtfTOCType        0
  399. # define        rtfTOCLevel        1
  400.  
  401. # define    rtfPosAttr    17
  402. # define        rtfPosX            0
  403. # define        rtfPosXCenter        1
  404. # define        rtfPosXInside        2
  405. # define        rtfPosXLeft        3
  406. # define        rtfPosXOutSide        4
  407. # define        rtfPosXRight        5
  408. # define        rtfPosY            6
  409. # define        rtfPosYInline        7
  410. # define        rtfPosYTop        8
  411. # define        rtfPosYCenter        9
  412. # define        rtfPosYBottom        10
  413. # define        rtfAbsWid        11
  414. # define        rtfTextDist        12
  415. # define        rtfRPosMargV        13
  416. # define        rtfRPosPageV        14
  417. # define        rtfRPosMargH        15
  418. # define        rtfRPosPageH        16
  419. # define        rtfRPosColH        17
  420.  
  421.  
  422.  
  423. /*
  424.     RTF font, color and style structures.  Used for font table,
  425.     color table, and stylesheet processing.
  426. */
  427.  
  428. typedef struct RTFFont        RTFFont;
  429. typedef struct RTFColor        RTFColor;
  430. typedef struct RTFStyle        RTFStyle;
  431. typedef struct RTFStyleElt    RTFStyleElt;
  432.  
  433.  
  434. struct RTFFont
  435. {
  436.     char    *rtfFName;        /* font name */
  437.     int    rtfFNum;        /* font number */
  438.     int    rtfFFamily;        /* font family */
  439.     RTFFont    *rtfNextFont;        /* next font in list */
  440. };
  441.  
  442.  
  443. /*
  444.     Color values are -1 if the default color for the the color
  445.     number should be used.  The default color is writer-dependent.
  446. */
  447.  
  448. struct RTFColor
  449. {
  450.     int        rtfCNum;    /* color number */
  451.     int        rtfCRed;    /* red value */
  452.     int        rtfCGreen;    /* green value */
  453.     int        rtfCBlue;    /* blue value */
  454.     RTFColor    *rtfNextColor;    /* next color in list */
  455. };
  456.  
  457.  
  458. struct RTFStyle
  459. {
  460.     char        *rtfSName;    /* style name */
  461.     int        rtfSNum;    /* style number */
  462.     int        rtfSBasedOn;    /* style this one's based on */
  463.     int        rtfSNextPar;    /* style next paragraph style */
  464.     RTFStyleElt    *rtfSSEList;    /* list of style words */
  465.     int        rtfExpanding;    /* non-zero = being expanded */
  466.     RTFStyle    *rtfNextStyle;    /* next style in style list */
  467. };
  468.  
  469. # define    rtfBasedOnNone    222    /* "no based-on style" */
  470.  
  471.  
  472. struct RTFStyleElt
  473. {
  474.     int        rtfSEClass;    /* token class */
  475.     int        rtfSEMajor;    /* token major number */
  476.     int        rtfSEMinor;    /* token minor number */
  477.     int        rtfSEParam;    /* control symbol parameter */
  478.     char        *rtfSEText;    /* text of symbol */
  479.     RTFStyleElt    *rtfNextSE;    /* next element in style */
  480. };
  481.  
  482.  
  483. # ifdef __STDC__
  484. typedef void (*RTFFuncPtr) (void);      /* generic function pointer */
  485. # else /* !__STDC__ */
  486. typedef    void (*RTFFuncPtr) ();        /* generic function pointer */
  487. # endif /* !__STDC__ */
  488.  
  489.  
  490. /*
  491.     Public RTF reader routines
  492. */
  493.  
  494. # ifdef __STDC__
  495. void        RTFInit (void);
  496. void        RTFSetStream (FILE*);
  497. void        RTFSetClassCallback(int, RTFFuncPtr);
  498. RTFFuncPtr    RTFGetClassCallback (int);
  499. void        RTFSetDestinationCallback(int, RTFFuncPtr);
  500. RTFFuncPtr    RTFGetDestinationCallback (int);
  501. void        RTFRead (void);
  502. int        RTFGetToken (void);     /* writer should rarely need this */
  503. void        RTFUngetToken (void);
  504. int        RTFPeekToken (void);
  505. void        RTFSetToken (int,int,int,int,char*);
  506. void        RTFSetReadHook (RTFFuncPtr);
  507. RTFFuncPtr    RTFGetReadHook (void);
  508. void        RTFRouteToken (void);
  509. void        RTFSkipGroup (void);
  510. void        RTFExpandStyle (int);
  511. int        RTFCheckCM (int,int);
  512. int        RTFCheckCMM (int,int,int);
  513. int        RTFCheckMM (int,int);
  514. RTFFont        *RTFGetFont (int);
  515. RTFColor    *RTFGetColor (int);
  516. RTFStyle    *RTFGetStyle (int);
  517. char        *RTFAlloc (int);
  518. char        *RTFStrSave (char*);
  519. void        RTFFree (char*);
  520. # else /* !__STDC__ */
  521. extern void        RTFInit ();
  522. extern void        RTFSetStream ();
  523. extern void        RTFSetClassCallback ();
  524. extern RTFFuncPtr    RTFGetClassCallback ();
  525. extern void        RTFSetDestinationCallback ();
  526. extern RTFFuncPtr    RTFGetDestinationCallback ();
  527. extern void        RTFRead ();
  528. extern int        RTFGetToken ();    /* writer should rarely need this */
  529. extern void        RTFUngetToken ();
  530. extern int        RTFPeekToken ();
  531. extern void        RTFSetToken ();
  532. extern void        RTFSetReadHook ();
  533. extern RTFFuncPtr    RTFGetReadHook ();
  534. extern void        RTFRouteToken ();
  535. extern void        RTFSkipGroup ();
  536. extern void        RTFExpandStyle ();
  537. extern int        RTFCheckCM ();
  538. extern int        RTFCheckCMM ();
  539. extern int        RTFCheckMM ();
  540. extern RTFFont        *RTFGetFont ();
  541. extern RTFColor        *RTFGetColor ();
  542. extern RTFStyle        *RTFGetStyle ();
  543. extern char        *RTFAlloc ();
  544. extern char        *RTFStrSave ();
  545. extern void        RTFFree ();
  546. # endif /* !__STDC__ */
  547.